home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48hor2 / mzik.src < prev    next >
Text File  |  1992-08-18  |  2KB  |  88 lines

  1. %%HP: T(3)F(.);
  2. @ MZIK, by Jonathan T. Higa
  3. \<< \-> S
  4.   \<<
  5.     IF S TYPE 2 \=/
  6.     THEN # 202h DOERR
  7.     END
  8.     IFERR RCL\GS
  9.     THEN
  10.     ELSE DROP S "\GSDAT exists." DOERR
  11.     END MZKPAR TYPE 5 ==
  12.     IF DUP
  13.     THEN MZKPAR SIZE 4 == AND
  14.     END
  15.     IF NOT
  16.     THEN { 55 4 3 128 } 'MZKPAR' STO
  17.     END MZKPAR OBJ\-> DROP \-> A L O T
  18.     \<<
  19.       WHILE S "" \=/
  20.       REPEAT S 1 1 SUB 2 \-> I
  21.         \<< 0
  22.           WHILE "-+b#" S I I SUB POS
  23.           REPEAT "+#" S I I SUB POS 1 -1 IFTE + 'I' 1 STO+
  24.           END I \-> J
  25.           \<<
  26.             WHILE S J J SUB NUM DUP 48 \>= SWAP 58 < AND
  27.             REPEAT 'J' 1 STO+
  28.             END
  29.             IF J I >
  30.             THEN S I J 1 - SUB OBJ\->
  31.             ELSE -1
  32.             END 0
  33.             WHILE S J J SUB "." ==
  34.             REPEAT 1 + 'J' 1 STO+
  35.             END S J S SIZE SUB 'S' STO
  36.           \>>
  37.         \>> \-> C X N P
  38.         \<<
  39.           CASE "ABCDEFG" C POS
  40.             THEN 2 [ -9 -7 -5 -4 -2 0 2 ] "CDEFGAB" C POS GET
  41.                 X + 12 / O + ^ A * 240 T N 0 > N L
  42.                 IFTE * / 2 .5 P ^ - * 2 \->ARRY \GS+
  43.             END "H" C ==
  44.             THEN \GS- 0 240 T N 0 > N L IFTE * / 2 .5 P ^ -
  45.                 * 2 \->ARRY + \GS+
  46.             END "P" C ==
  47.             THEN 0 240 T N 0 > N L IFTE * / 2 .5 P ^ -
  48.                 * 2 \->ARRY \GS+
  49.             END "<>" C POS
  50.             THEN 'O' N 1 MAX
  51.               IF "<" C ==
  52.               THEN NEG
  53.               END STO+
  54.             END "LOT" C POS N -1 \=/ AND
  55.             THEN N
  56.               IF X
  57.               THEN X *
  58.               END { L O T } "LOT" C POS GET STO
  59.             END "K" C ==
  60.             THEN
  61.               IF X
  62.               THEN 'A' 2 X N -1 \=/ N 1 IFTE * 12 / ^ STO*
  63.               ELSE
  64.                     IF N 0 >
  65.                     THEN N 'A' STO
  66.                     END
  67.               END
  68.             END
  69.           END
  70.         \>>
  71.       END { } A + L + O + T + 'MZKPAR' STO
  72.     \>>
  73.   \>> "\<< " "\>>"
  74.   WHILE
  75.     IFERR \GS-
  76.     THEN 0
  77.     ELSE 1
  78.     END
  79.   REPEAT OBJ\-> DROP \-> F D
  80.     \<<
  81.       IF F
  82.       THEN F \->STR " " + D \->STR + " BEEP "
  83.       ELSE D \->STR " WAIT "
  84.       END + SWAP +
  85.     \>>
  86.   END + OBJ\->
  87. \>>
  88.